package it.scambiocorse.validator;
import it.scambiocorse.dao.AreaService;
import it.scambiocorse.model.AreaType;
import it.scambiocorse.utils.ResourceManager;

import org.apache.log4j.Logger;
import org.springframework.validation.Errors;
import org.springframework.validation.ValidationUtils;
import org.springframework.validation.Validator;


public class AreaValidator implements Validator  {

	final Logger logger = Logger.getLogger(getClass());
	
	AreaService areaDao = (AreaService)ResourceManager.getBean("areaService");
	
	public boolean supports(Class aClass) {
		return AreaType.class.equals(aClass);
	}
 
	public void validate(Object obj, Errors errors) {
		
		AreaType area = (AreaType) obj;
		String msg = "Campo Obbligatorio";
		ValidationUtils.rejectIfEmptyOrWhitespace(errors, "nomeArea", "", msg);
		if (! errors.hasFieldErrors("nomeArea")) {
			if (area.getNomeArea().contains(" ")) {
				errors.rejectValue("nomeArea", "", "Il nome area non deve contenere spazi, perfavore scegline un'altro");
			} else if (areaDao.esisteAreaByNome(area.getNomeArea())) {
				logger.debug("Controllo che non ci sia un'altra area con questo nome");
				errors.rejectValue("nomeArea", "", "Esiste gia' un area con questo nome, per favore scegline un'altro ");
			}
		}
		
		ValidationUtils.rejectIfEmptyOrWhitespace(errors, "tipoArea", "", "Selezionare il tipo di area che vuoi creare (suggerimenti sulla destra)");
		
		
	}
	
	
}